package com.itheima.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.common.PageResult;
import com.itheima.mapper.CompanysMapper;
import com.itheima.pojo.Companys;
import com.itheima.service.CompanysService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class CompanysServiceImp implements CompanysService {

    @Autowired
    private CompanysMapper companysMapper;
    @Override
    public Companys findById(Integer id) {

        Companys companys = companysMapper.selectById(id);
        return companys;
    }

    @Override
    public void updateCompanys(Integer id, Companys companys) {
        LambdaUpdateWrapper<Companys> wrapper = new LambdaUpdateWrapper<>();
        wrapper.eq(Companys::getId,id);
        companysMapper.update(companys,wrapper);
    }

    @Override
    public PageResult findPage(Integer page, Integer pagesize, String tags,String province,String city,String shortName,Integer state) {

        if (page == null){
            page = 1;
        }

        LambdaQueryWrapper<Companys> wrapper = new LambdaQueryWrapper<>();
        System.out.println(city);
        if (tags!=null){
            wrapper.like(Companys::getTags,tags);
        }

        if (province!=null){
            wrapper.eq(Companys::getProvince,province);
        }

        if (city!=null){
            wrapper.eq(Companys::getCity,city);
        }

        if (shortName!=null){
            wrapper.like(Companys::getShortName,shortName);
        }
        if (state!=null){
            wrapper.eq(Companys::getState,state);
        }

        IPage<Companys> p=new Page<>(page,pagesize);
        IPage<Companys> companysIPage = companysMapper.selectPage(p, wrapper);

        return new PageResult((int)companysIPage.getTotal(),(int)companysIPage.getSize(),(int)companysIPage.getPages(),(int)companysIPage.getCurrent(),companysIPage.getRecords());
    }

    @Override
    public void deleteById(Integer id) {
        companysMapper.deleteById(id);
    }

    @Override
    public void add(Companys companys) {
        companysMapper.insert(companys);
    }

    @Override
    public void updateState(Integer id, Integer state) {
        Companys companys = companysMapper.selectById(id);
        companys.setState(state);
        companysMapper.updateById(companys);
    }
}
